<?php
/**
 * 微吧模型 - 数据对象模型
 * @author jason <yangjs17@yeah.net> 
 * @version TS3.0
 */
class WeibaModel extends Model
{
    protected $tableName = 'weiba';
    protected $error = '';
    protected $fields = array(
            0 => 'weiba_id',
            1 => 'weiba_name',
            2 => 'uid',
            3 => 'ctime',
            4 => 'logo',
            5 => 'intro',
            6 => 'who_can_post',
            7 => 'who_can_reply',
            8 => 'follower_count',
            9 => 'thread_count',
            10 => 'admin_uid',
            11 => 'recommend',
            12 => 'status',
            13 => 'api_key',
            14 => 'domain',
            15 => 'province',
            16 => 'city',
            17 => 'area',
            18 => 'reg_ip',
            19 => 'is_del',
            20 => 'notify',
            21 => 'cid',
            22 => 'avatar_big',
            23 => 'avatar_middle',
            24 => 'new_count',
            25 => 'new_day',
            26 => 'info',
            27 => 'input_city',
            '_autoinc' => true,
            '_pk' => 'weiba_id'
    );
    // 个人感兴趣的群组
    public function interestingWeiba($uid, $pagesize = 4)
    {
        // 个人兴趣
        $user_tag = model('Tag')->setAppName('User')->setAppTable('user')->getAppTags($uid);
        $i=0;
        foreach (( array ) $user_tag as $k=>$v) {
            if ($i==0) {
                $_tag_in_name .= " AND ( g.weiba_name LIKE '%{$v}%' ";
                $_tag_in_intro .= " OR g.intro LIKE '%{$v}%' ";
            } else {
                $_tag_in_name .= " OR g.weiba_name LIKE '%{$v}%' ";
                $_tag_in_intro .= " OR g.intro LIKE '%{$v}%' ";
            }
            $i++;
        }
        // 管理和已经加入的群组
        $my_weiba = M('weiba_follow')->field('weiba_id')->where('level >= 1 AND follower_uid=' . $uid)->findAll();
        foreach (( array ) $my_weiba as $v) {
            $_my_weiba_id [] = $v ['weiba_id'];
        }
        
        $map = 'g.status=1 AND g.is_del=0 AND g.avatar_middle!=""';
        empty($_tag_in_name) || $map .= $_tag_in_name;
        empty($_tag_in_intro) || $map .= $_tag_in_intro ;
        if ($_tag_in_name || $_tag_in_intro) {
            $_my_weiba_id && $map .= ') AND g.weiba_id NOT IN (' . implode(',', $_my_weiba_id) . ')';
            !$_my_weiba_id && $map .= ')';
        } else {
            $_my_weiba_id && $map .= ' AND g.weiba_id NOT IN (' . implode(',', $_my_weiba_id) . ')';
            !$_my_weiba_id && $map .= ')';
        }
        $weiba_count = $this->field('count(DISTINCT(g.weiba_id)) AS count')->table("{$this->tablePrefix}weiba AS g")->where($map)->find();
        $weiba_list = $this->field('DISTINCT(g.weiba_id),g.weiba_name,g.avatar_middle,g.follower_count,g.ctime,g.intro')->table("{$this->tablePrefix}weiba AS g")->order(' rand() ')->where($map)->findPage($pagesize, $weiba_count ['count']);
        //dump(M()->getLastSql());exit;
        // 标签相关的群组不够四个
        if ($weiba_list ['count'] < $pagesize) {
            if ($weiba_list ['data']) {
                $not_in_gids = array_merge($_my_weiba_id, getSubByKey($weiba_list ['data'], 'weiba_id'));
            }
            if ($not_in_gids) {
                $gid_map = ' AND weiba_id NOT IN (' . implode(',', $not_in_gids) . ') ';
            }
            $_count = $this->where('status=1 AND is_del=0 AND avatar_middle !="" ' . $gid_map)->count();
            $rand_list = $this->field('weiba_id,weiba_name,avatar_middle,follower_count,ctime,intro')->where('status=1 AND is_del=0 AND avatar_middle !="" ' . $gid_map)->order(' rand() ')->limit((rand(0, $_count - ($pagesize - $weiba_count ['count']))) . ',' . ($pagesize - $weiba_count ['count']))->findAll();
            foreach ($rand_list as $v) {
                $v ['reason'] = '热门微吧';
                $weiba_list ['data'] [] = $v;
            }
            //dump($weiba_list); 			dump($this->getLastSql());exit;
        }
        return $weiba_list;
    }
    /**
     * 获取微吧列表，后台可以根据条件查询
     * 
     * @param integer $limit
     *        	结果集数目，默认为20
     * @param array $map
     *        	查询条件
     * @return array 微吧列表信息
     */
    public function getWeibaList($limit = 20, $map = array())
    {
        if (isset($_POST)) {
            // 搜索时用到
            $_POST ['weiba_id'] && $map ['weiba_id'] = intval($_POST ['weiba_id']);
            $_POST ['weiba_name'] && $map ['weiba_name'] = array(
                    'like',
                    '%' . $_POST ['weiba_name'] . '%'
            );
            $_POST ['uid'] && $map ['uid'] = intval($_POST ['uid']);
            $_POST ['admin_uid'] && $map ['admin_uid'] = intval($_POST ['admin_uid']);
            $_POST ['recommend'] && $map ['recommend'] = $_POST ['recommend'] == 1 ? 1 : 0;
            $_POST ['weiba_cate'] && $map ['cid'] = intval($_POST ['weiba_cate']);
        }
        $map ['is_del'] = 0;
        // 查询数据
        $list = $this->where($map)->order('follower_count desc,thread_count desc')->findPage($limit);
        
        $weibacate = D('weiba_category')->findAll();
        $cids = array();
        foreach ($weibacate as $c) {
            $cids [$c ['id']] = $c ['name'];
        }
        // 数据组装
        foreach ($list ['data'] as $k => $v) {
            $list ['data'] [$k] ['weiba_name'] = '<a target="_blank" href="' . U('weiba/Index/detail', array(
                    'weiba_id' => $v ['weiba_id']
            )) . '">' . $v ['weiba_name'] . '</a>';
            $list ['data'] [$k] ['logo'] && $list ['data'] [$k] ['logo'] = '<img src="' . getImageUrlByAttachId($v ['logo']) . '" width="50" height="50">';
            $create_uid = model('User')->getUserInfoByUids($v ['uid']);
            $list ['data'] [$k] ['uid'] = $create_uid [$v ['uid']] ['space_link'];
            $list ['data'] [$k] ['ctime'] = friendlyDate($v ['ctime']);
            $admin_uid = model('User')->getUserInfoByUids($v ['admin_uid']);
            $list ['data'] [$k] ['admin_uid'] = $admin_uid [$v ['admin_uid']] ['space_link'];
            $list ['data'] [$k] ['follower_count/thread_count'] = $v ['follower_count'] . '/' . $v ['thread_count'];
            $isrecommend = $v ['recommend'] ? '取消推荐' : '首页热帖推荐';
            $list ['data'] [$k] ['weiba_cate'] = $cids [$v ['cid']];
            $list ['data'] [$k] ['DOACTION'] = '<a href="javascript:void(0)" onclick="admin.recommend(' . $v ['weiba_id'] . ',' . $v ['recommend'] . ');">' . $isrecommend . '</a>&nbsp;-&nbsp;<a href="' . U('weiba/Admin/editWeiba', array(
                    'weiba_id' => $v ['weiba_id'],
                    'tabHash' => 'editWeiba'
            )) . '">编辑</a>&nbsp;-&nbsp;<a onclick="admin.delWeiba(' . $v ['weiba_id'] . ');" href="javascript:void(0)">解散</a>';
        }
        return $list;
    }
    
    /**
     * 获取微吧的Hash数组
     * 
     * @param string $k
     *        	Hash数组的Key值字段
     * @param string $v
     *        	Hash数组的Value值字段
     * @return array 用户组的Hash数组
     */
    public function getHashWeiba($k = 'weiba_id', $v = 'weiba_name')
    {
        $list = $this->findAll();
        $r = array();
        foreach ($list as $lv) {
            $r [$lv ['weiba_id']] = $lv [$v];
        }
        
        return $r;
    }
    
    /**
     * 获取帖子列表，后台可以根据条件查询
     * 
     * @param integer $limit
     *        	结果集数目，默认为20
     * @param array $map
     *        	查询条件
     * @return array 微吧列表信息
     */
    public function getPostList($limit = 20, $map = array())
    {
        if (isset($_POST)) {
            // 搜索时用到
            $_POST ['post_id'] && $map ['post_id'] = intval($_POST ['post_id']);
            $_POST ['title'] && $map ['title'] = array(
                    'like',
                    '%' . $_POST ['title'] . '%'
            );
            $_POST ['post_uid'] && $map ['post_uid'] = intval($_POST ['post_uid']);
            $_POST ['recommend'] && $map ['recommend'] = $_POST ['recommend'] == 1 ? 1 : 0;
            $_POST ['digest'] && $map ['digest'] = $_POST ['digest'] == 1 ? 1 : 0;
            $_POST ['top'] && $map ['top'] = intval($_POST ['top']);
            $_POST ['weiba_id'] && $map ['weiba_id'] = intval($_POST ['weiba_id']);
        }
        // 查询数据
        if (!$map['weiba_id']) {
            $map ['weiba_id'] = array(
                    'in',
                    getSubByKey(D('weiba')->where('is_del=0')->findAll(), 'weiba_id')
            );
        }
        $list = D('weiba_post')->where($map)->order('last_reply_time desc,post_time desc')->findPage($limit);
        
        // 数据组装
        foreach ($list ['data'] as $k => $v) {
            $list ['data'] [$k] ['title'] = '<a target="_blank" href="' . U('weiba/Index/postDetail', array(
                    'post_id' => $v ['post_id']
            )) . '">' . $v ['title'] . '</a>';
            $author = model('User')->getUserInfoByUids($v ['post_uid']);
            $list ['data'] [$k] ['post_uid'] = $author [$v ['post_uid']] ['space_link'];
            $list ['data'] [$k] ['post_time'] = friendlyDate($v ['post_time']);
            $list ['data'] [$k] ['last_reply_time'] = friendlyDate($v ['last_reply_time']);
            $list ['data'] [$k] ['read_count/reply_count'] = $v ['read_count'] . '/' . $v ['reply_count'];
            $list ['data'] [$k] ['weiba_id'] = $this->where('weiba_id=' . $v ['weiba_id'])->getField('weiba_name');
            if ($v ['is_del'] == 0) {
                $isRecommend = $v ['recommend'] ? '取消推荐' : '推荐到首页';
                $isDigest = $v ['digest'] ? '取消精华' : '设为精华';
                $isGlobalTop = $v ['top'] == 2 ? '取消全局置顶' : '设为全局置顶';
                $isLocalTop = $v ['top'] == 1 ? '取消吧内置顶' : '设为吧内置顶';
                // $list['data'][$k]['DOACTION'] = '<a href="javascript:void(0)" onclick="admin.setPost('.$v['post_id'].',1,'.$v['recommend'].');">'.$isRecommend.'</a>|<a href="javascript:void(0)" onclick="admin.setPost('.$v['post_id'].',2,'.$v['digest'].')">'.$isDigest.'</a>|<a href="javascript:void(0)" onclick="admin.setPost('.$v['post_id'].',3,'.$v['top'].',2)">'.$isGlobalTop.'</a>|<a href="javascript:void(0)" onclick="admin.setPost('.$v['post_id'].',3,'.$v['top'].',1)">'.$isLocalTop.'</a>|<a href="'.U('weiba/Admin/editPost',array('post_id'=>$v['post_id'],'tabHash'=>'editPost')).'">编辑</a>|<a href="javascript:void(0)" onclick="admin.doStorey('.$v['post_id'].')">调整回复楼层</a>|<a href="javascript:void(0)" onclick="admin.delPost('.$v['post_id'].')">删除</a>';
                $list ['data'] [$k] ['DOACTION'] = '<a href="javascript:void(0)" onclick="admin.setPost(' . $v ['post_id'] . ',1,' . $v ['recommend'] . ');">' . $isRecommend . '</a>&nbsp;-&nbsp;<a href="javascript:void(0)" onclick="admin.setPost(' . $v ['post_id'] . ',2,' . $v ['digest'] . ')">' . $isDigest . '</a>&nbsp;-&nbsp;<a href="javascript:void(0)" onclick="admin.setPost(' . $v ['post_id'] . ',3,' . $v ['top'] . ',2)">' . $isGlobalTop . '</a>&nbsp;-&nbsp;<a href="javascript:void(0)" onclick="admin.setPost(' . $v ['post_id'] . ',3,' . $v ['top'] . ',1)">' . $isLocalTop . '</a>&nbsp;-&nbsp;<a href="' . U('weiba/Admin/editPost', array(
                        'post_id' => $v ['post_id'],
                        'tabHash' => 'editPost'
                )) . '">编辑</a>&nbsp;-&nbsp;<a href="javascript:void(0)" onclick="admin.delPost(' . $v ['post_id'] . ')">删除</a>';
            } else {
                $list ['data'] [$k] ['DOACTION'] = '<a href="javascript:void(0)" onclick="admin.recoverPost(' . $v ['post_id'] . ')">还原</a>&nbsp;-&nbsp;<a href="javascript:void(0)" onclick="admin.deletePost(' . $v ['post_id'] . ')">彻底删除</a>';
            }
        }
        return $list;
    }
    
    /**
     * 根据微吧ID获取微吧信息
     * 
     * @param integer $weiba_id
     *        	微吧ID
     * @return array 微吧信息
     */
    public function getWeibaById($weiba_id)
    {
        $weiba = $this->where('weiba_id=' . $weiba_id)->find();
        if ($weiba ['logo']) {
            $weiba ['pic_url'] = getImageUrlByAttachId($weiba ['logo']);
        }
        
        return $weiba;
    }
    
    /**
     * 关注微吧
     * 
     * @param
     *        	integer uid 用户UID
     * @param
     *        	integer weiba_id 微吧ID
     * @return integer 新添加的数据ID
     */
    public function doFollowWeiba($uid, $weiba_id)
    {
        $data ['weiba_id'] = $weiba_id;
        $data ['follower_uid'] = $uid;
        if (D('weiba_follow')->where($data)->find()) {
            $this->error = '您已关注该微吧';
            return false;
        } else {
            $res = D('weiba_follow')->add($data);
            if ($res) {
                D('weiba')->where('weiba_id=' . $weiba_id)->setInc('follower_count');
                
                // 添加积分
                model('Credit')->setUserCredit($uid, 'follow_weiba');
                
                return true;
            } else {
                $this->error = '关注失败';
                return false;
            }
        }
    }
    
    /**
     * 取消关注微吧
     * 
     * @param
     *        	integer uid 用户UID
     * @param
     *        	integer weiba_id 微吧ID
     * @return integer 新添加的数据ID
     */
    public function unFollowWeiba($uid, $weiba_id)
    {
        $data ['weiba_id'] = $weiba_id;
        $data ['follower_uid'] = $uid;
        if (D('weiba_follow')->where($data)->find()) {
            $res = D('weiba_follow')->where($data)->delete();
            if ($res) {
                D('weiba')->where('weiba_id=' . $weiba_id)->setDec('follower_count');
                D('weiba_apply')->where($data)->delete();
                
                // 添加积分
                model('Credit')->setUserCredit($uid, 'unfollow_weiba');
                
                return true;
            } else {
                $this->error = '关注失败';
                return false;
            }
        } else {
            $this->error = '您尚未关注该微吧';
            return false;
        }
    }
    
    /**
     * 判断是否关注某个微吧
     * 
     * @param
     *        	integer uid 用户UID
     * @param
     *        	integer weiba_id 微吧ID
     * @return boolean 是否已关注
     */
    public function getFollowStateByWeibaid($uid, $weiba_id)
    {
        if (empty($weiba_id)) {
            return 0;
        }
        $follow_data = D('weiba_follow')->where(" ( follower_uid = '{$uid}' AND weiba_id = '{$weiba_id}' ) ")->find();
        if ($follow_data) {
            return 1;
        } else {
            return 0;
        }
    }
    
    /**
     * 批量获取微吧关注状态
     * 
     * @param
     *        	integer uid 用户UID
     * @param
     *        	array weiba_ids 微吧ID
     * @return [type] [description]
     */
    public function getFollowStateByWeibaids($uid, $weiba_ids)
    {
        $_weibaids = is_array($weiba_ids) ? implode(',', $weiba_ids) : $weiba_ids;
        if (empty($_weibaids)) {
            return array();
        }
        $follow_data = D('weiba_follow')->where(" ( follower_uid = '{$uid}' AND weiba_id IN({$_weibaids}) ) ")->findAll();
        
        $follow_states = $this->_formatFollowState($uid, $weiba_ids, $follow_data);
        return $follow_states [$uid];
    }
    
    /**
     * 格式化，用户的关注数据
     * 
     * @param integer $uid
     *        	用户ID
     * @param array $fids
     *        	用户ID数组
     * @param array $follow_data
     *        	关注状态数据
     * @return array 格式化后的用户关注状态数据
     */
    private function _formatFollowState($uid, $weiba_ids, $follow_data)
    {
        ! is_array($weiba_ids) && $fids = explode(',', $weiba_ids);
        foreach ($weiba_ids as $weiba_ids) {
            $follow_states [$uid] [$weiba_ids] = array(
                    'following' => 0
            );
        }
        foreach ($follow_data as $r_v) {
            if ($r_v ['follower_uid'] == $uid) {
                $follow_states [$r_v ['follower_uid']] [$r_v ['weiba_id']] ['following'] = 1;
            }
        }
        
        return $follow_states;
    }
    
    /**
     * 获取微吧列表
     * 
     * @param
     *        	integer limit 每页显示条数
     * @param
     *        	integer page 第几页
     * @return array 微吧列表
     */
    public function get_weibas_forapi($since_id = 0, $max_id = 0, $limit = 20, $page = 1, $uid)
    {
        $limit = intval($limit);
        $page = intval($page);
        $where = "is_del=0";
        if (! empty($since_id) || ! empty($max_id)) {
            ! empty($since_id) && $where .= " AND weiba_id > {$since_id}";
            ! empty($max_id) && $where .= " AND weiba_id < {$max_id}";
        }
        $start = ($page - 1) * $limit;
        $end = $limit;
        $weibaList = $this->where($where)->limit("{$start},{$end}")->order('weiba_id asc')->findAll();
        foreach ($weibaList as $k => $v) {
            if ($v ['logo']) {
                $weibaList [$k] ['logo_url'] = getImageUrlByAttachId($v ['logo']);
            }
            if (D('weiba_follow')->where('follower_uid=' . $uid . ' AND weiba_id=' . $v ['weiba_id'])->find()) {
                $weibaList [$k] ['followstate'] = 1;
            } else {
                $weibaList [$k] ['followstate'] = 0;
            }
            $postStatus = array(
                    'status' => 0,
                    'msg' => '没有贴吧发帖权限'
            );
            // 添加微吧权限
            if ($GLOBALS ['ts'] ['mid'] && CheckPermission('weiba_normal', 'weiba_post')) {
                $whoCanPost = $v ['who_can_post'];
                CheckPermission('core_admin', 'admin_login') && $whoCanPost = 0;
                switch ($whoCanPost) {
                    case 0 :
                        $postStatus ['status'] = 1;
                        $postStatus ['msg'] = '具有此贴吧的发帖权限';
                        break;
                    case 1 :
                        if ($v ['followstate'] == 1) {
                            $postStatus ['status'] = 1;
                            $postStatus ['msg'] = '具有此贴吧的发帖权限';
                        } else {
                            $postStatus ['status'] = 0;
                            $postStatus ['msg'] = '该贴吧关注后才能发帖';
                        }
                        break;
                    case 2 :
                        $map ['weiba_id'] = $weiba_id;
                        $map ['level'] = array(
                                'in',
                                '2,3'
                        );
                        $weiba_admin_uids = D('weiba_follow')->where($map)->order('level DESC')->getAsFieldArray('follower_uid');
                        if (in_array($this->mid, $weiba_admin_uids)) {
                            $postStatus ['status'] = 1;
                            $postStatus ['msg'] = '具有此贴吧的发帖权限';
                        } else {
                            $postStatus ['status'] = 0;
                            $postStatus ['msg'] = '该贴吧只有圈主能发帖';
                        }
                        break;
                    case 3 :
                        $weiba_super_admin = D('weiba_follow')->where('level=3 and weiba_id=' . $v ['weiba_id'])->getField('follower_uid');
                        if ($this->mid == $weiba_super_admin) {
                            $postStatus ['status'] = 1;
                            $postStatus ['msg'] = '具有此贴吧的发帖权限';
                        } else {
                            $postStatus ['status'] = 0;
                            $postStatus ['msg'] = '该贴吧只有贴吧管理员能发帖';
                        }
                        break;
                }
            }
            $weibaList [$k] ['post_status'] = $postStatus;
        }
        return $weibaList;
    }
    
    /**
     * 获取帖子列表
     * 
     * @param
     *        	integer limit 每页显示条数
     * @param
     *        	integer page 第几页
     * @param
     *        	integer weiba_id 所属微吧ID(可选)
     * @return array 帖子列表
     */
    public function get_posts_forapi($limit = 20, $page = 1, $weiba_id = null)
    {
        $limit = intval($limit);
        $page = intval($page);
        $start = ($page - 1) * $limit;
        $end = $limit;
        if ($weiba_id) {
            $map ['weiba_id'] = $weiba_id;
        }
        $map ['is_del'] = 0;
        $postList = D('weiba_post')->where($map)->limit("{$start},{$end}")->order('top desc,last_reply_time desc')->findAll();
        foreach ($postList as $k => $v) {
            $postList [$k] ['author_info'] = model('User')->getUserInfo($v ['post_uid']);
            if (D('weiba_favorite')->where('post_id=' . $v ['post_id'] . ' AND uid=' . $GLOBALS ['ts'] ['mid'])->find()) {
                $postList [$k] ['favorite'] = 1;
            } else {
                $postList [$k] ['favorite'] = 0;
            }
        }
        return $postList;
    }
    
    /**
     * 获取我的帖子
     * 
     * @param
     *        	integer limit 每页显示条数
     * @param
     *        	integer page 第几页
     * @param
     *        	uid 用户UID
     * @param
     *        	varchar type 类型
     * @return array 帖子列表
     */
    public function myWeibaForApi($limit, $page, $uid, $type)
    {
        $map ['is_del'] = 0;
        $limit = intval($limit);
        $page = intval($page);
        $start = ($page - 1) * $limit;
        $end = $limit;
        switch ($type) {
            case 'myPost' :
                $map ['post_uid'] = $uid;
                $postList = D('weiba_post')->where($map)->limit("{$start},{$end}")->order('post_time desc')->findAll();
                break;
            case 'myReply' :
                $myreply = D('weiba_reply')->where('uid=' . $uid)->order('ctime desc')->field('post_id')->findAll();
                $map ['post_id'] = array(
                        'in',
                        array_unique(getSubByKey($myreply, 'post_id'))
                );
                $postList = D('weiba_post')->where($map)->limit("{$start},{$end}")->order('last_reply_time desc')->findAll();
                break;
            case 'myFollow' :
                $myFollow = D('weiba_follow')->where('follower_uid=' . $uid)->findAll();
                $map ['weiba_id'] = array(
                        'in',
                        getSubByKey($myFollow, 'weiba_id')
                );
                $postList = D('weiba_post')->where($map)->limit("{$start},{$end}")->order('top desc,post_time desc')->findAll();
                break;
            case 'myFavorite' :
                $myFavorite = D('weiba_favorite')->where('uid=' . $uid)->order('id desc')->findAll();
                $map ['post_id'] = array(
                        'in',
                        getSubByKey($myFavorite, 'post_id')
                );
                $postList = D('weiba_post')->where($map)->limit("{$start},{$end}")->findAll();
        }
        foreach ($postList as $k => $v) {
            $postList [$k] ['author_info'] = model('User')->getUserInfo($v ['post_uid']);
            if (D('weiba_favorite')->where('post_id=' . $v ['post_id'] . ' AND uid=' . $uid)->find()) {
                $postList [$k] ['favorite'] = 1;
            } else {
                $postList [$k] ['favorite'] = 0;
            }
        }
        return $postList;
    }
    
    /**
     * 搜索微吧
     * 
     * @param
     *        	varchar keyword 搜索关键字
     * @param
     *        	integer limit 每页显示条数
     * @param
     *        	integer page 第几页
     * @param
     *        	integer uid 用户UID
     * @return array 微吧列表
     */
    public function searchWeibaForApi($keyword, $limit, $page, $uid)
    {
        $limit = intval($limit);
        $page = intval($page);
        $start = ($page - 1) * $limit;
        $end = $limit;
        $map ['is_del'] = 0;
        $where ['weiba_name'] = array(
                'like',
                '%' . $keyword . '%'
        );
        $where ['intro'] = array(
                'like',
                '%' . $keyword . '%'
        );
        $where ['_logic'] = 'or';
        $map ['_complex'] = $where;
        $weibaList = D('weiba')->where($map)->limit("{$start},{$end}")->order('follower_count desc,thread_count desc')->findAll();
        if ($weibaList) {
            foreach ($weibaList as $k => $v) {
                if ($v ['logo']) {
                    $weibaList [$k] ['logo_url'] = getImageUrlByAttachId($v ['logo']);
                }
                if (D('weiba_follow')->where('follower_uid=' . $uid . ' AND weiba_id=' . $v ['weiba_id'])->find()) {
                    $weibaList [$k] ['followstate'] = 1;
                } else {
                    $weibaList [$k] ['followstate'] = 0;
                }
            }
            return $weibaList;
        } else {
            return array();
        }
    }
    
    /**
     * 搜索帖子
     * 
     * @param
     *        	varchar keyword 搜索关键字
     * @param
     *        	integer limit 每页显示条数
     * @param
     *        	integer page 第几页
     * @return array 帖子列表
     */
    public function searchPostForApi($keyword, $limit, $page)
    {
        $limit = intval($limit);
        $page = intval($page);
        $start = ($page - 1) * $limit;
        $end = $limit;
        $map ['is_del'] = 0;
        $where ['title'] = array(
                'like',
                '%' . $keyword . '%'
        );
        $where ['content'] = array(
                'like',
                '%' . $keyword . '%'
        );
        $where ['_logic'] = 'or';
        $map ['_complex'] = $where;
        $postList = D('weiba_post')->where($map)->limit("{$start},{$end}")->order('post_time desc')->findAll();
        if ($postList) {
            foreach ($postList as $k => $v) {
                $postList [$k] ['weiba'] = D('weiba')->where('weiba_id=' . $v ['weiba_id'])->getField('weiba_name');
                foreach ($postList as $k => $v) {
                    $postList [$k] ['author_info'] = model('User')->getUserInfo($v ['post_uid']);
                }
            }
            return $postList;
        } else {
            return array();
        }
    }
    
    public function setNewcount($weiba_id, $num=1)
    {
        $map['weiba_id'] = $weiba_id;
        $time = time();
        $weiba = D('weiba')->where($map)->find();
        if ($weiba['new_day']!= date("Y-m-d", $time)) {
            D('weiba')->where($map)->setField('new_day', date("Y-m-d", $time));
            D('weiba')->where($map)->setField('new_count', 0);
        }
        if ($num == 0) {
            D('weiba')->where($map)->setField('new_count', 0);
        }
        if ($num > 0) {
            D('weiba')->where($map)->setField('new_count', (int)$num+(int)$weiba['new_count']);
        }
        return true;
    }
    
    public function getLastError()
    {
        return $this->error;
    }
    
    /*
     * 获取微吧名称
     */
    public function getWeibaName($weiba_ids)
    {
        $weiba_ids = array_unique($weiba_ids);
        if (empty($weiba_ids)) {
            return false;
        }
        $map ['weiba_id'] = array(
                'in',
                $weiba_ids
        );
        $names = D('weiba')->where($map)->field('weiba_id,weiba_name')->findAll();
        foreach ($names as $n) {
            $nameArr [$n ['weiba_id']] = $n ['weiba_name'];
        }
        return $nameArr;
    }
}
